package com.ruoyi.predict.utils;

import com.ruoyi.predict.aiDomain.JobRecommendation;
import com.ruoyi.predict.aiDomain.JobRecommendationResponse;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class JobRecommendationParser {

    /**
     * 解析AI返回的文本为结构化数据
     * @param aiResponseText AI返回的原始文本（如示例中的text内容）
     * @return 结构化的岗位推荐列表
     */
    public static JobRecommendationResponse parse(String aiResponseText) {
        JobRecommendationResponse response = new JobRecommendationResponse();
        List<JobRecommendation> recommendations = new ArrayList<>();

        if (!StringUtils.hasText(aiResponseText)) {
            response.setRecommendations(recommendations);
            return response;
        }
        aiResponseText = aiResponseText.replaceAll("\\s*toolExecutionRequests\\s*=\\s*null\\s*", "");
        // 正则表达式匹配格式：序号. 岗位名：xxx 推荐理由：xxx
        // 适配可能的换行、空格差异
        Pattern pattern = Pattern.compile("(\\d+)\\.\\s*岗位名：(.*?)\\s*推荐理由：(.*?)(?=\\n\\d+\\.|$)", Pattern.DOTALL);
        Matcher matcher = pattern.matcher(aiResponseText);

        while (matcher.find()) {
            JobRecommendation job = new JobRecommendation();
            // 提取序号（1、2、3）
            job.setIndex(Integer.parseInt(matcher.group(1)));
            // 提取岗位名（去除前后空格）
            job.setJobName(matcher.group(2).trim());
            // 提取推荐理由（去除前后空格和多余换行）
            String reason = matcher.group(3).trim().replaceAll("\\s+", " "); // 合并空格
            job.setReason(reason);
            recommendations.add(job);
        }

        response.setRecommendations(recommendations);
        return response;
    }
}